#ifndef SBTRENDER_H_INCLUDED
#define SBTRENDER_H_INCLUDED

#include "SbtPrerequisites.h"

namespace Sbt
{

class SBT_EXPORT Renderer
{
public:
    Renderer(const String& name) : mName(name) {}

    virtual bool initialize() = 0;
    virtual bool finalize() = 0;

    virtual RenderWindow* createRenderWindow(
        const String& windowTitle,
        const unsigned windowWidth,
        const unsigned windowHeight,
        const bool isFullScreen) = 0;

    virtual void drawPrimitive(const Primitive* primitive) = 0;

protected:
    String mName;

private:
    Renderer(const Renderer&) {}
    Renderer& operator=(const Renderer&) { return *this; }
};

} // namespace Sbt

#endif // SBTRENDER_H_INCLUDED